package com.student.Activitys.activity;

import android.os.Bundle;
import android.os.Handler;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.student.Activitys.R;
import com.student.Activitys.activity.base.BaseActivity;
import com.student.Activitys.adapter.ImageTextAdapter;
import com.student.Activitys.adapter.base.BaseRefreshAdapter;
import com.student.Activitys.bean.ImageTextBean;
import com.student.Activitys.bean.pack.ImageTextJsonPack;
import com.odd.Activitys.http.manager.SupportManager;
import com.student.Activitys.utils.Constant;
import com.student.Activitys.utils.JumperUtils;
import com.student.Activitys.utils.ToastUtils;

import org.simple.eventbus.Subscriber;
import org.simple.eventbus.ThreadMode;

import java.util.ArrayList;
import java.util.List;

import butterknife.Bind;

/**
 * 项目名称：智慧校园学生端
 * 类描述：奖惩资助
 * 创建人：张飞祥
 * 创建时间：2017/10/12 9:47
 * 修改人：张飞祥
 * 修改时间：2017/10/12 9:47
 * 修改备注：
 */
public class SupportActivity extends BaseActivity {

    @Bind(R.id.iv_return)
    ImageView ivReturn;
    @Bind(R.id.rv_support)
    RecyclerView rvSupport;
    @Bind(R.id.tv_title)
    TextView tvTitle;

    //初始化网络请求
    public SupportManager mApiManager;
    /**
     * 分页加载  所需变量
     */
    private int page = 1;              //当前页
    private int rows = 5;              //数据条目数
    //上拉加载 没有数据 page 是否 +1
    private boolean supportPageFlag = true;
    //上拉加载 是否滑动到底部 重复了加载
    private boolean supportFlag = true;
    //奖惩资助列表 适配器
    private ImageTextAdapter supportAdapter;
    //奖惩资助列表 List集合
    private List<ImageTextBean> supportList = null;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_support);
        //网络请求 常驻方法
        mApiManager = mApiManager.getSupportApiManager(SupportActivity.this, SupportActivity.this.getTaskId());
        //list 集合初始化
        supportList = new ArrayList<>();
    }

    @Override
    protected void initData() {
        //初始化请求
        initHttp();
        //上拉加载事件
        initLoadMoreListener();

        //设置标题
        tvTitle.setText("奖惩资助");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        /**
         * 返回按钮监听
         */
        ivReturn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    @Override
    protected void getNotData() {

    }

    /**
     * 初始化网络请求
     */
    private void initHttp() {
        //设置首次加载 标记
        mApiManager.getType(Constant.FIRST_LOAD);
        //显示 加载dialog
        initShowTimeDialog("正在加载本页面数据，请稍后...",SupportActivity.this);
        //获取奖惩列表 网络请求
        mApiManager.supportList(Constant.HTTP_SUPPORT_LIST_ACTION,xh, page , rows );
    }


    /**
     * 奖惩资助列表 数据 网络请求 加载是否成功
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_ON_COMPLETED, mode = ThreadMode.MAIN)
    public void initSupportOnCompleted(String str) {
        //销毁handler
        time_handler.removeCallbacks(time_runnable);
        timeDailog.dismiss();
        dialog.dismiss();
    }
    /**
     * 奖惩资助列表 数据 首次 网络请求 返回具体 数据实体
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_NOTICE, mode = ThreadMode.MAIN)
    public void supportList(final ImageTextJsonPack pack) {

        //填充列表集合数据
        supportList.addAll(pack.getDataList());
        //填充列表数据
        supportAdapter = new ImageTextAdapter(SupportActivity.this, pack.getDataList());
        rvSupport.setLayoutManager(new LinearLayoutManager(SupportActivity.this, LinearLayoutManager.VERTICAL, false));
        rvSupport.setAdapter(supportAdapter);
        //奖惩资助点击事件
        initItemClick();
    }

    /**
     * 奖惩：奖惩资助列表 网络请求 上拉加载数据
     */
    @Subscriber(tag = Constant.BUS_SUPPORT_LIST_FOOT_NOTICE)
    public void FooterAddress(ImageTextJsonPack pack) {
        final List<ImageTextBean> footList = pack.getDataList();

        //开启延时操作
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                /**
                 * 判断是否有数据
                 * 当 返回列表 数据 size 0 没有更多数据可加载了
                 */
                if (footList.size()==0) {
                    //page 不允许 + 1
                    supportPageFlag = false;
                    //更改 文字 底部状态
                    supportAdapter.changeMoreStatus(Constant.NO_LOAD_MORE);
                    ToastUtils.showShort(SupportActivity.this, "没有更多数据了");
                } else {
                    //page 允许 + 1
                    supportPageFlag = true;
                    //填充上拉加载新的列表集合数据
                    supportList.addAll(footList);
                    if (supportAdapter!=null){
                        //加载到adapter里面
                        supportAdapter.addFooterItem(footList);
                    }
                    //设置回到上拉加载更多
                    supportAdapter.changeMoreStatus(Constant.PULLUP_LOAD_MORE);
                    ToastUtils.showShort(SupportActivity.this, "更新了 " + footList.size() + " 条目数据");
                }
                //设置可以加载 为 “是”
                supportFlag = true;
            }
        }, 1000);
    }

    /**
     * 奖惩资助点击事件
     */
    private void initItemClick() {
        if (supportAdapter!=null){
            supportAdapter.setOnItemClickListener(new BaseRefreshAdapter.OnRecyclerViewItemClickListener() {
                @Override
                public void onItemClick(View view, int position) {
                    /**
                     * 跳转 webView事件
                     */
                    Bundle bundle = new Bundle();
                    bundle.putString(Constant.WEB_METHOD, Constant.WEB_SUPPORT);                     //奖惩资助 方法名拼接字段
                    bundle.putString(Constant.WEB_ID, supportList.get(position).getId()+"");         //当前奖惩资助 id
                    bundle.putString(Constant.WEB_TITLE, "奖惩详情");                                 //设置web页面标题
                    bundle.putSerializable(Constant.IMAGE_TEXT_BEAN, supportList.get(position));     //当前实体对象
                    JumperUtils.JumpTo(SupportActivity.this, SupportDetailsActivity.class, bundle);  //跳转到下一页面
                }
            });
        }
    }

    /**
     * 上拉加载数据
     */
    private void initLoadMoreListener() {
        rvSupport.setOnScrollListener(new RecyclerView.OnScrollListener() {
            int lastVisibleItem;
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                //判断RecyclerView的状态 是空闲时，同时，是最后一个可见的ITEM时才加载
                if (newState == RecyclerView.SCROLL_STATE_IDLE && supportFlag && supportAdapter!=null) {
                    //设置可以加载 为 “否”
                    supportFlag = false;
                    //设置正在加载更多
                    supportAdapter.changeMoreStatus(Constant.LOADING_MORE);
                    //设置 加载数据类型（上拉加载）
                    mApiManager.getType(Constant.PULLUP_LOAD_MORE);
                    //如果 为 true 可以 查看下一页
                    if (supportPageFlag){
                        //数据请求
                        page = page + 1;
                    }
                    mApiManager.supportList(Constant.HTTP_SUPPORT_LIST_ACTION,xh, page , rows );
                }
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
                //最后一个可见的ITEM
                lastVisibleItem = layoutManager.findLastVisibleItemPosition();
            }
        });
    }
}
